Software components that are designed to perform a certain function are known as applications. Applications are widely used in a variety of business processes, and are increasingly used in collaborative situations, i.e. situations in which one or more applications receive data from another application.
Applications in a collaborative environment frequently update their data and transmit data to collaborating applications, which are triggered by an incoming message to update their own data with the contents of the message. Application data updates are typically of considerable relevance in a business scenario or process. Accordingly, three natural requirements have arisen for collaborative data exchanges: 1) application data is stored in a persistent medium, typically a relational database system; 2) data updates within applications and the message transport processes that move data must be reliably integrated; and 3) the message transport process itself must be reliable.